/**
 * 
 */
package baduga.server;

import baduga.core.Core_Exception;
import baduga.server.Game_Cfg;

/**
 * @author Janek
 *
 */
public class Cards {
	
	/** Określa dozwolony kolor karty*/
	private int color;
	
	/** Określa dozwolone figury, jednocześnie stawnowi wartość pkt. karty */
	private int figure;
	
	/**
	 * Zawiera kodu błędów
	 * 0 - Nie przeszło walidacji figur
	 * 1 - Nie przeszło walidacji kolorów
	 */
	private final int internalErrorCode[] = {};
	
	
	public Cards(int figure, int color) {


	};
	
	
	/**
	 * Funkcja sprawdza czy wprowadzona kolor spełnia warunki
	 * 
	 * @param col
	 * @return
	 */
	private static Object[] validateColor(final int col)
	{
		//Def.
		Object[] rData;
		
		//Inicjalizacja
		rData = new Object[] {false, null};
		
		if(Game_Cfg.CARD_COL_CFG[0] >= col &&  Game_Cfg.CARD_COL_CFG[1] <= col)
		{
			rData[0] = true;
		}
		else
		{
			rData[1] = 0x03CF;
		}
		
		return rData;
	}
	
	/**
	 * Funkcja sprawdza czy wprowadzona figura spełnia warunki
	 * 
	 * @param fig
	 * @return
	 */
	private static Object[] validateFigure(final int fig)
	{
		//Def.
		Object[] rData;
		
		//Inicjalizacja
		rData = new Object[] {false, null};
		
		if(Game_Cfg.CARD_FIG_CFG[0] >= fig &&  Game_Cfg.CARD_FIG_CFG[1] <= fig)
		{
			rData[0] = true;
		}
		else
		{
			rData[1] = 0x03CE;
		}
		
		return rData;
	}
	
	/**
	 * Porównuje karty naszą z inną) [W badze karty słabsze są silniejszymi. AS, 1 > Król
	 * \n
	 * obserwujemy this.color i this.figure
	 * \n
	 * 
	 * [0]
	 *  1 Większa\n
	 *  0 TakaSama\n
	 * -1 Mniejsza\n
	 * [1]
	 *  0 - nie kasować
	 *  1 - jedna do kasacji
	 * 
	 * Result index:
	 * 0 - Zwraca informacje o większa, mniejsza
	 * 1 - Że karty tego samego koloru (Czyli jedną trzeba wyeliminować)
	 * 
	 * 
	 * @param color
	 * @return
	 */
	public int[] compareTo(final Cards enemyCard)
	{
		int[] result = new int[] {0, 0};
		
		if(this.color != enemyCard.getColor())
		{
			//Im mniejsza figura tym mocniejsza
			if(this.figure > enemyCard.getFigure())
			{
				result[0] = -1;
			}
			else if(this.figure < enemyCard.getFigure())
			{
				result[0] = 1;
			}

		}
		else
		{
			//Wiadomo, już z góry. Że jedna z kart idzie do kasacji.
			result[1] = 1;
			
			//Im mniejsza figura tym mocniejsza
			if(this.figure > enemyCard.getFigure())
			{
				result[0] = -1;
			}
			else if(this.figure < enemyCard.getFigure())
			{
				result[0] = 1;
			}
			
			
		}

		
		return result;
		
	}
	
	
	



	
	//------------------ [gets & sets] - #START ------------------
	
	/**
	 * @return the figure
	 */
	public int getFigure() {
		return figure;
	}


	
	/**
	 * @return the color
	 */
	public int getColor() {
		return figure;
	}
	

	/**
	 * Zwraca kod karty w formie liczbowej
	 * 
	 * @return
	 */
	public int getCodeCard()
	{
		return (figure - 1) * Game_Cfg.CARD_FIG_CFG[1] + color;
	}
	
	
	//------------------ [gets & sets] - #END ------------------



	
	

}
